﻿//
// *************************************************************************************
// WP-Framework
//
// Developed by 
// Lukas Kretschmar (lkretschmar.dev@bluewin.ch)
//
// Switzerland, Copyright (c) 2012 lkretschmar
// This content is released under the MIT License (http://opensource.org/licenses/MIT).
//     
// *************************************************************************************
//
//
			

using System;

namespace KretschIT.WP_Fx.EasyMoq.Test.Helpers.Objects
{
    class TestObjectMockable : Mockable<ITestObject>, ITestObject
    {
        public void Action()
        {
            this.Handler.Call(m => m.Action());
        }

        public void Action(string arg)
        {
            this.Handler.Call(m => m.Action(arg));
        }

        public void Action(Dummy dummy)
        {
            this.Handler.Call(m => m.Action(dummy));
        }

        public void Action(IUnknownObject unknown)
        {
            this.Handler.Call(m => m.Action(unknown));
        }

        public void Action(string first, string second)
        {
            this.Handler.Call(m => m.Action(first, second));
        }

        public void Action(char first, char second)
        {
            throw new NotImplementedException();
        }

        public void OtherAction(string first, string second)
        {
            throw new NotImplementedException();
        }

        public bool Func()
        {
            return this.Handler.Call(m => m.Func());
        }

        public bool Func(string arg)
        {
            return this.Handler.Call(m => m.Func(arg));
        }

        public bool Func(Dummy dummy)
        {
            return this.Handler.Call(m => m.Func(dummy));
        }

        public bool Func(IUnknownObject unknown)
        {
            return this.Handler.Call(m => m.Func(unknown));
        }

        public bool Func(string first, string second)
        {
            return this.Handler.Call(m => m.Func(first, second));
        }

        public string Property
        {
            get { return this.Handler.Get(m => m.Property); }
            set { this.Handler.Set(m => m.Property, value); }
        }

        public string OtherProperty
        {
            get { throw new NotImplementedException(); }
        }
    }
}
